<template>
   <div>
      <!-- 公共导入组件 -->
      <upload-excel :on-success="success" />
   </div>
</template>

<script>
import { importEmployee } from '../../api/employees'
export default {
   methods: {
      async success({ header, results }) {
         // console.log(header)
         // console.log(results)
         // 因为header 跟 results 的数据是中文
         // 要跟新增员工的属性一致
         // 数据对应关系转换
         const userRelations = {
            入职日期: 'timeOfEntry',
            手机号: 'mobile',
            姓名: 'username',
            转正日期: 'correctionTime',
            工号: 'workNumber'
         }
         // var arr = []
         // results.forEach(item => {
         //    var userInfo = {}
         //    // item 就是遍历它的对象的值
         //    // console.log(item)
         //    // Object.keys(item) 就是由 key 组成的数组
         //    Object.keys(item).forEach(key => {
         //       // key 是中文
         //       // 找到对应的英文名，把原来的对象中的 key 换成英文  例：
         //       // userRelations[key] = userRelations.入职日期 = 'timeOfEntry'
         //       // 把所有的英文放入一个对象中
         //       // 将原来中文对应的值，赋值给原来英文对应的值
         //       //每一个对象的值给 英文的名字这个对象
         //       userInfo[userRelations[key]] = item[key]
         //    })
         //    arr.push(userInfo)
         // })
         // 也可以这么写
         // map 遍历数组，返回一个新的数组，就是 return 回的数据
         var newArr = results.map(item => {
            var userInfo = {}
            Object.keys(item).forEach(key => {
               // 转换的时候判断一下时间格式
               // 如果是入职时间或者转正日期
               if (
                  userRelations[key] === 'timeOfEntry' ||
                  userRelations[key] === 'correctionTime'
               ) {
                  // 转换一下， 后端接口限制了不能是字符串，要求转换成时间类型
                  // 只有这样才能存入数据库
                  // 例： userInfo.'timeOfEntry' =  把它所对应的值转换成 2021/3/15 这种格式
                  // item[key] 就是对象所对应的数据
                  userInfo[userRelations[key]] = new Date(
                     this.formatDate(item[key], '/')
                  )
               } else {
                  userInfo[userRelations[key]] = item[key]
               }
            })
            // 新的数组
            return userInfo
         })
         // console.log(newArr)
         // 调用接口，传入数组
         await importEmployee(newArr)
         this.$message.success('导入excel成功')
         // 返回上一个页面
         this.$router.back()
      },
      // 因为 excel 时间格式读取过来跟js格式不一样，提供方法转换一下
      formatDate(numb, format) {
         const time = new Date((numb - 1) * 24 * 3600000 + 1)
         time.setYear(time.getFullYear() - 70)
         const year = time.getFullYear() + ''
         const month = time.getMonth() + 1 + ''
         const date = time.getDate() - 1 + ''
         if (format && format.length === 1) {
            return year + format + month + format + date
         }
         return (
            year +
            (month < 10 ? '0' + month : month) +
            (date < 10 ? '0' + date : date)
         )
      }
   }
}
</script>

<style lang="scss" scoped></style>
